The present invention relates to a card methodology and architecture for configuring a software engine used for creating new smart card applications within a programming environment, and more specifically relates to a software tool and methodology that provides flexibility in formatting and interfacing smart cards, card readers and information systems in an object-oriented application development environment.
In the past, many different smart card readers existed and many different smart cards were available. However, while some similarities existed among the various card readers and smart cards, every vender had unique features and capabilities that differentiated their products. This presented a steep learning curve for application developers who had to learn the intricate details regarding how a particular card and card reader functioned. In addition, once an application had been designed, transition across hardware products was very difficult without significant code rewrites. The software tools provided by hardware vendors were either weak or non-existent and thus created the following problems.
For every different reader or card, there existed a unique set of commands. Example commands included: create file, create directory, present secret code, load secret code, reset reader, eject card, etc. Each command had an associated hexadecimal instruction. Addition or variation of commands or instructions created big problems since the instructions were hardcoded within the software engine. For example, a card could have the following commands: create file, write file, present code, and load code. However, if a new command were to be added such as xe2x80x9cupdate codexe2x80x9d, the entire software engine would have had to have been rewritten. This would have been cumbersome, inconvenient, and time-consuming.
With regard to readers, readers also differed in the way that they communicated with the cards, drew power (battery, host, external), processed commands, and reported status and errors, for example. With regard to the cards, the cards were also very diverse (magnetic stripe cards, memory chip cards such as simple flash memory cards, card operating systems known as COS chip cards with programmable operating systems, and others). Even within the COS family of cards, there were different support elements for directory structures, file allocation and access, encryption, secret codes, status and error messages, etc.
In a system utilizing different smart cards and smart card readers, such a system was quite cumbersome, mostly because of the specialized smart card software that was provided by the hardware manufactures. Many of the tools for creating specialized smart cards to comply with a user""s desired specifications were not high-level tools and were not easy to use. The tools did not create any common way to work with different smart cards and readers, and there was no existing development tool that permitted development of an application for different readers and cards.
A first object of the present application is to overcome the aforementioned drawbacks and to create a smart card software tool useable in an interfacing architecture that allows a user to similarly interface with smart cards and/or card readers despite the source and compatibility standard of each card or reader.
Another object of the present application is to provide a self-configuring software engine usable for communicating with cards and card readers having different formats and for creating and using files, directories or secret codes, for example.
A still further object of the present application is to provide a tool for modifying smart card or card reader commands without the need to re-write an entire software engine.
An even further object of the present application is to create a tool which provides flexibility by allowing the reformatting of a smart card and/or card reader with new information.
These and other objects of the present application are fulfilled by providing a method for communicating with a card and a card reader, comprising the steps of: prestoring a plurality of files for configuring a software tool for communicating with the card as card configuration files; prestoring a plurality of files for configuring a software tool for communicating with the card reader as reader configuration files; selecting a card configuration file; selecting a reader configuration file; storing the selected card configuration file and reader configuration file; and configuring the software tool for communicating with the card and card reader based upon the respective stored selected card and card reader configuration files.
These and other objects of the present application are further fulfilled by providing a method for communicating with a card, comprising the steps of: prestoring a plurality of files for configuring a software tool for communicating with a card; selecting one of the prestored files; storing the selected file; and configuring the software tool for communicating with the card based upon the stored selected file.
These and other objects of the present application are still further fulfilled by providing a method for communicating with a card reader, comprising the steps of: prestoring a plurality of files for configuring a software tool for communicating with a card reader; selecting one of the prestored files; storing the selected file; and configuring the software tool for communicating with the card reader based upon the stored selected file.
These and other objects of the present application are even further fulfilled by providing an apparatus for formatting a card, comprising: a first memory for prestoring a plurality of card configuration files for configuring a software tool for formatting the card; a selection function for selecting one of the prestored card configuration files based upon card type; a dynamic memory for storing the card configuration file selected based upon card type, wherein the software tool is configured based upon the stored card configuration file, the selection function further selects at least one command for formatting the card, and the selected at least one command is stored in memory on the card; and processing function for formatting the card based upon the at least one selected stored command.
These and other objects of the present application are still yet further fulfilled by providing an apparatus for formatting a card reader, comprising: a first memory for prestoring a plurality of card reader configuration files for configuring a software tool for formatting the card reader; a selection function for selecting one of the prestored card reader configuration files based upon card reader type; a dynamic memory for storing the card reader configuration file selected based upon card reader type, wherein the software tool is configured based upon the stored card configuration file, the selection function further selects at least one command for formatting the card reader, and the selected at least one command is stored in memory of the card reader; and a processing function for formatting the card reader based upon the at least one selected and stored command.
These and other objects of the present application are still even further fulfilled by providing an apparatus for formatting a card and a card reader, comprising: a first memory for prestoring a plurality of card configuration files and a plurality of card reader configuration files for configuring a software tool for formatting a card and card reader; a selection function for selecting one of the prestored card configuration files and one of the card reader configuration files based upon respective card and card reader type; a dynamic memory for storing the card and card reader configuration files selected based upon the respective card and card reader type, wherein the software tool is configured based upon at least one of the stored card and card reader configuration files, the selection function further selects at least one command for formatting at least one of the card and card reader, and the selected at least one command for formatting at least one of the card and card reader are stored in memory of the respective card and card reader; and a processing function for formatting at least one of the card and card reader based on the respective selected and stored command.
These and other objects of the present application will become more readily apparent from the detailed description given hereinafter. However, it should be understood that the detailed description and specific examples, while indicating preferred embodiments of the invention, are given by way of illustration only, since various changes and modifications within the spirit and scope of the invention will become apparent to those skilled in the art from this detailed description.